package com.smart.community.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.smart.community.user.entity.Menu;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 菜单Mapper接口
 * 
 * @author Wu.Liang
 */
@Mapper
public interface MenuMapper extends BaseMapper<Menu> {

    /**
     * 根据用户ID查询菜单列表
     * 
     * @param userId 用户ID
     * @return 菜单列表
     */
    List<Menu> selectByUserId(@Param("userId") Long userId);

    /**
     * 根据角色ID查询菜单列表
     * 
     * @param roleId 角色ID
     * @return 菜单列表
     */
    List<Menu> selectByRoleId(@Param("roleId") Long roleId);

    /**
     * 根据父菜单ID查询子菜单列表
     * 
     * @param parentId 父菜单ID
     * @return 子菜单列表
     */
    List<Menu> selectByParentId(@Param("parentId") Long parentId);

    /**
     * 查询所有菜单（树形结构）
     * 
     * @return 菜单树
     */
    List<Menu> selectMenuTree();

    /**
     * 根据菜单编码查询菜单
     * 
     * @param menuCode 菜单编码
     * @return 菜单信息
     */
    Menu selectByMenuCode(@Param("menuCode") String menuCode);

    /**
     * 根据权限标识查询菜单
     * 
     * @param permission 权限标识
     * @return 菜单信息
     */
    Menu selectByPermission(@Param("permission") String permission);
} 